package com.antexpress.bean;

import com.antexpress.common.Const;
import com.antexpress.pojo.Employee;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Andy
 */
public class Authentication {

    /*判断用户是否登录*/
    public static boolean isLogin(HttpSession session) {
        if (session.getAttribute(Const.CURRENT_USER) != null) {
            return true;
        } else {
            return false;
        }
    }

    /*判断用户是否具有管理员工的权限（不区分具体部门）*/
    public static boolean isEmployeeAdmin(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10 || auth == 7 || auth == 5 || auth == 6) {
            return true;
        } else {
            return false;
        }
    }

    /*判断用户是否具有管理员工及部门、职位信息的权限（可管理所有员工）*/
    public static boolean isHRAdmin(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10 || auth == 7) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Oliver
     *
     * @param emp
     * @return
     */
    public static boolean isExpressAdmin(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10 || auth == 6 || auth == 3 || auth == 2 || auth == 1) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Oliver
     *
     * @param emp
     * @return
     */
    public static boolean isExpressAreaAdmin(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10 || auth == 6 || auth == 7) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isExpressCourierAdmin(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10 || auth == 6 || auth == 2 || auth == 7) {
            return true;
        } else {
            return false;
        }
    }

    /*判断用户是否具有管理物流业务的权限，不区分具体业务*/
    //快递员
    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isExpressCourier(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 1 || auth == 10) {
            return true;
        } else {
            return false;
        }
    }

    /*判断用户是否具有管理物流业务的权限，不区分具体业务*/
    //区域经理
    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isExpressAreaManager(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 2 || auth == 10) {
            return true;
        } else {
            return false;
        }
    }
    public static boolean isExpressAreaManagerOnly(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 2) {
            return true;
        } else {
            return false;
        }
    }


    /*判断用户是否具有管理物流业务的权限，不区分具体业务*/
    //发货单管理员
    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isExpressLogisticsApproval(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 3 || auth == 10) {
            return true;
        } else {
            return false;
        }
    }

    /*判断用户是否具有管理物流业务的权限，不区分具体业务*/
    //物流部管理
    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isExpressLogisticsManager(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 6 || auth == 10) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断操作的管理员是否有权限操作相应员工
     *
     * @param op 对员工的操作 0-修改信息 1-新建员工
     * @param adminAuth 操作管理员的优先级
     * @param adminDept 操作管理员的部门
     * @param empAuth 被操作员工对象的优先级
     * @param empDept 被操作员工对象的部门
    *
     */
    /**
     * Andy
     *
     * @param emp
     * @return
     */
    public static boolean isAllowedOpEmp(int op, int adminAuth, String adminDept, int empAuth, String empDept) {
        if (adminAuth == 10 && empAuth <= 10) {
            if (op == 0 && empAuth < 10) {
                return true;
            } else if (op == 0 && empAuth == 10) {
                return false;
            } else if (op == 1) {
                return true;
            }
        } else if (adminAuth == 7 && empAuth <= 7) {
            if (op == 0 && empAuth < 7) {
                return true;
            } else if (op == 0 && empAuth == 7) {
                return false;
            } else if (op == 1) {
                return true;
            }
        } else if (adminAuth == 5 && adminDept.equalsIgnoreCase(empDept)) {
            if (empAuth == 5) {
                if (op == 0) {
                    return false;
                }
                if (op == 1) {
                    return true;
                }
            } else if (empAuth == 0) {
                return true;
            }
        } else if (adminAuth == 6 && adminDept.equalsIgnoreCase(empDept)) {
            if (empAuth == 6) {
                if (op == 0) {
                    return false;
                }
                if (op == 1) {
                    return true;
                }
            } else if (empAuth == 0 || empAuth == 1 || empAuth == 2 || empAuth == 3) {
                return true;
            }
        }
        return false;
    }

    /**
     * Dannis
     *
     * @param emp
     * @return
     */
    public static boolean isSuperManager(Employee emp) {
        int auth = emp.getTitle().getAuthority();
        if (auth == 10) {
            return true;
        } else {
            return false;
        }
    }
    
    public static boolean isTitleAllowedDeleted(String titleId){
        for(String id:Const.CONST_TITLE){
            if(id.equals(titleId))
                return false;
        }
        return true;
    }
    
    public static boolean isDeptAllowedDeleted(String deptId){
        for(String id:Const.CONST_DEPT){
            if(id.equals(deptId))
                return false;
        }
        return true;
    }
}
